﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;
using cn.com.chinabank.CBSecurity;
using System.Net;
using System.IO;
using System.Text;
using WFinger.Common;

public partial class user_info_onlinePoint : WFinger.Web.UI.UserPage
{
    WFinger.CMS.UserMisc rd = new WFinger.CMS.UserMisc();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
        }
        div_1.Visible = true;
        div_2.Visible = false;
        string pointnumber = Request.QueryString["pointNumber"];
        if (pointnumber != null && pointnumber != "")
        {
            pointNumber_1.InnerHtml = Request.QueryString["pointNumber"].ToString();
            this.getpointNumber.Value = Request.QueryString["pointNumber"].ToString();
            string _tmp = WFinger.Common.Rand.Number(12);
            orderNumber_1.InnerHtml = _tmp;
            this.getorderNumber.Value = _tmp;
            //这里输入ISP商信息，准备开始支付
            div_1.Visible = false;
            div_2.Visible = true;
            DataTable dt = rd.getOnlinePay();
            if (dt != null)
            {
                if (dt.Rows.Count > 0)
                {
                    string _ispname = "";
                    switch (dt.Rows[0]["onpayType"].ToString())
                    {
                        case "0":
                            _ispname = "支付宝支付(www.alipay.com)";
                            break;
                        case "1":
                            _ispname = "网银支付(www.chinabank.com.cn)";
                            break;
                        case "2":
                            _ispname = "云网支付(www.cncard.net)";
                            break;
                    }
                    ispName.InnerHtml = "<font color=\"red\">" + _ispname +"</font>";
                    this.v_md5info.Value = "";
                    this.v_mid.Value = dt.Rows[0]["o_userName"].ToString();
                    this.v_oid.Value = _tmp;
                    this.v_amount.Value = pointnumber.ToString();
                    this.v_moneytype.Value = "CNY";
                    string _urls = dt.Rows[0]["o_returnurl"].ToString(); ;
                    this.v_url.Value = _urls;
                    string key = dt.Rows[0]["o_key"].ToString();
                    string _text = pointnumber.ToString() + "CNY" + _tmp + dt.Rows[0]["o_userName"].ToString() + _urls + key; // 拼凑加密串
                    this.v_md5info.Value = MD5Util.getMD5(_text);
                    this.postUrl.Value = dt.Rows[0]["o_sendurl"].ToString();
                    this.hd_type.Value = dt.Rows[0]["O_other3"].ToString();
                }
            }

        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            int pointNumber = int.Parse(this.pointNumber.Text);
            Response.Redirect("onlinePoint.aspx?pointNumber=" + pointNumber + "&s=0&dec=在线银行冲值");
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        //担保交易
        if (this.hd_type.Value == "0")
        {
            //业务参数赋值；
            string gateway = "https://www.alipay.com/cooperate/gateway.do?";	//支付接口
            string service = "create_partner_trade_by_buyer";                   //服务名称，这个是识别是何接口实现何功能的标识，请勿修改

            string seller_email = this.v_mid.Value;                     //商家签约时的支付宝帐号，即收款的支付宝帐号
            string sign_type = "MD5";                                           //加密类型,签名方式“不用改”
            string key = "hgfwrde8v7yyibhlrktb35gwgruw14wa";                    //安全校验码，与partner是一组，获取方式是：用签约时支付宝帐号登陆支付宝网站www.alipay.com，在商家服务我的商家里即可查到。
            string partner = "2088002109809779";                                //商户ID，合作身份者ID，合作伙伴ID
            string _input_charset = "utf-8";                                    //编码类型，完全根据客户自身的项目的编码格式而定，千万不要填错。否则极其容易造成MD5加密错误。

            string show_url = "http://www.alipay.com/";                         //展示地址，即在支付页面时，商品名称旁边的“详情”的链接地址。

            string out_trade_no = "1";                       //客户自己的订单号，（现取系统时间，可改成网站自己的变量），订单号必须在自身订单系统中保持唯一性
            string subject = "充值";                            //商品名称，也可称为订单名称，该接口并不是单一的只能买一样东西，可把一次支付当作一次下订单
            string body = "充值信息";                                  //商品描述，即备注
            string price = "0.01";                                //商品价格，也可称为订单的总金额
            string quantity = "1";                               //商品数量，当该支付被当作是订单而非单个商品时，数量写为“1”

            string logistics_type = "POST";                                     //物流配送方式：POST(平邮)、EMS(EMS)、EXPRESS(其他快递)
            string logistics_fee = "0";                         //物流配送费用
            string logistics_payment = "BUYER_PAY";                             //物流配送费用付款方式：SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)

            string logistics_type_1 = "EXPRESS";                                //物流配送方式：POST(平邮)、EMS(EMS)、EXPRESS(其他快递)
            string logistics_fee_1 = "0";                     //物流配送费用
            string logistics_payment_1 = "BUYER_PAY";                           //物流配送费用付款方式：SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)

            string logistics_type_2 = "EMS";                                    //物流配送方式：POST(平邮)、EMS(EMS)、EXPRESS(其他快递)
            string logistics_fee_2 = "0";                        //物流配送费用
            string logistics_payment_2 = "BUYER_PAY";                           //物流配送费用付款方式：SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)

            //服务器通知url（Alipay_Notify.asp文件所在路经），必须是完整的路径地址
            string notify_url = "http://" + Request.Url.Authority + "/user/info/onlineNotify.aspx";
            //服务器返回url（return_Alipay_Notify.asp文件所在路经），必须是完整的路径地址
            string return_url = "http://" + Request.Url.Authority + "/user/info/onlineReturn.aspx";
            //支付URL生成
            string aliay_url = AliPay.CreatUrl(
                gateway,
                service,
                partner,
                sign_type,
                out_trade_no,
                subject,
                body,
                price,
                show_url,
                seller_email,
                key,
                return_url,
                _input_charset,
                notify_url,
                logistics_type,
                logistics_fee,
                logistics_payment,
                logistics_type_1,
                logistics_fee_1,
                logistics_payment_1,
                logistics_type_2,
                logistics_fee_2,
                logistics_payment_2,
                quantity
                );

            //以下是GET方式传递参数
            //			Response.Redirect(aliay_url);


            //以下是POST方式传递参数
            Response.Write("<html><head></head><body>");
            Response.Write("<form name='alipaysubmit' method='post' action='https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8'>");
            Response.Write("<input type='hidden' name='service' value=" + service + ">");
            Response.Write("<input type='hidden' name='partner' value=" + partner + ">");
            Response.Write("<input type='hidden' name='sign_type' value=" + sign_type + ">");
            Response.Write("<input type='hidden' name='out_trade_no' value=" + out_trade_no + ">");
            Response.Write("<input type='hidden' name='subject' value=" + subject + ">");
            Response.Write("<input type='hidden' name='body' value=" + body + ">");
            Response.Write("<input type='hidden' name='price' value=" + price + ">");
            Response.Write("<input type='hidden' name='show_url' value=" + show_url + ">");
            Response.Write("<input type='hidden' name='seller_email' value=" + seller_email + ">");
            Response.Write("<input type='hidden' name='return_url' value=" + return_url + ">");
            Response.Write("<input type='hidden' name='notify_url' value=" + notify_url + ">");
            Response.Write("<input type='hidden' name='logistics_type' value=" + logistics_type + ">");
            Response.Write("<input type='hidden' name='logistics_fee' value=" + logistics_fee + ">");
            Response.Write("<input type='hidden' name='logistics_payment' value=" + logistics_payment + ">");
            Response.Write("<input type='hidden' name='logistics_type_1' value=" + logistics_type_1 + ">");
            Response.Write("<input type='hidden' name='logistics_fee_1' value=" + logistics_fee_1 + ">");
            Response.Write("<input type='hidden' name='logistics_payment_1' value=" + logistics_payment_1 + ">");
            Response.Write("<input type='hidden' name='logistics_type_2' value=" + logistics_type_2 + ">");
            Response.Write("<input type='hidden' name='logistics_fee_2' value=" + logistics_fee_2 + ">");
            Response.Write("<input type='hidden' name='logistics_payment_2' value=" + logistics_payment_2 + ">");
            Response.Write("<input type='hidden' name='payment_type' value=1>");
            Response.Write("<input type='hidden' name='quantity' value=" + quantity + ">");
            Response.Write("<input type='hidden' name='sign' value=" + aliay_url + ">");
            Response.Write("</form>");
            Response.Write("<script>");
            Response.Write("document.alipaysubmit.submit()");
            Response.Write("</script>");
            Response.Write("</body></html>");
        }
        else
        {
            //直接交易
            ///////////////////////以下参数是需要设置的相关配置参数，设置后不会更改的///////////////////////////
            string partner = "2088002053153634";                                     //合作身份者ID
            string key = "9fkjby5pbzscg61vil4pf6xwlp8b9w6d";                         //安全检验码
            string seller_email = "wangjinmin1982@126.com";                             //签约支付宝账号或卖家支付宝帐户
            string input_charset = "utf-8";                                          //字符编码格式 目前支持 gb2312 或 utf-8
            string notify_url = "http://localhost:61293/js_vs2005_utf8/notify_url.aspx"; //交易过程中服务器通知的页面 要用 http://格式的完整路径，不允许加?id=123这类自定义参数
            string return_url = "http://localhost:61293/js_vs2005_utf8/return_url.aspx"; //付完款后跳转的页面 要用 http://格式的完整路径，不允许加?id=123这类自定义参数
            string show_url = "http://localhost:61293/js_vs2005_utf8/myorder.aspx";                     //网站商品的展示地址，不允许加?id=123这类自定义参数
            string sign_type = "MD5";                                                //加密方式 不需修改
            string antiphishing = "0";                                               //防钓鱼功能开关，'0'表示该功能关闭，'1'表示该功能开启。默认为关闭
            //一旦开启，就无法关闭，根据商家自身网站情况请慎重选择是否开启。
            //申请开通方法：联系我们的客户经理或拨打商户服务电话0571-88158090，帮忙申请开通
            //若要使用防钓鱼功能，建议使用POST方式请求数据

            ////////////////////////////////////////////////////////////////////////////////////////////////////

            ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////
            //必填参数
            string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");  //请与贵网站订单系统中的唯一订单号匹配
            string subject = "订单名称1";                                    //订单名称，显示在支付宝收银台里的“商品名称”里，显示在支付宝的交易管理的“商品名称”的列表里。
            string body = "订单描述备注1";                                   //订单描述、订单详细、订单备注，显示在支付宝收银台里的“商品描述”里
            string total_fee = "0.01";                                      //订单总金额，显示在支付宝收银台里的“应付总额”里

            //扩展功能参数——网银提前
            string paymethod = "bankPay";                                   //默认支付方式，四个值可选：bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
            string defaultbank = "CMB";                                     //默认网银代号，代号列表见http://club.alipay.com/read.php?tid=8681379

            //扩展功能参数——防钓鱼
            string encrypt_key = "";                                        //默认关闭，用于防止模拟提交、防钓鱼等功能
            string exter_invoke_ip = "";                                    //买家本地电脑的IP地址
            if (antiphishing == "1")
            {
                encrypt_key = AlipayFunction.Query_timestamp(partner);
                exter_invoke_ip = "";                                       //填写上买家本地电脑的IP地址
            }

            //扩展功能参数——其他
            string extra_common_param = "";                //自定义参数，可存放任何内容（除=、&等特殊字符外），不会显示在页面上
            string buyer_email = "";			                            //默认买家支付宝账号

            //扩展功能参数——分润(若要使用，请按照注释要求的格式赋值)
            string royalty_type = "";                                   //提成类型，该值为固定值：10，不需要修改
            string royalty_parameters = "";
            //提成信息集，与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
            //提成信息集格式为：收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
            //如：
            //royalty_type = "10";
            //royalty_parameters = "111@126.com^0.01^分润备注一|222@126.com^0.01^分润备注二";

            //扩展功能参数——自定义超时(若要使用，请按照注释要求的格式赋值)
            //该功能默认不开通，需联系客户经理咨询
            string it_b_pay = "";  //超时时间，不填默认是15天。八个值可选：1h(1小时),2h(2小时),3h(3小时),1d(1天),3d(3天),7d(7天),15d(15天),1c(当天)

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //构造请求函数
            AlipayService aliService = new AlipayService(partner, seller_email, return_url, notify_url, show_url, out_trade_no, subject, body, total_fee, paymethod, defaultbank, encrypt_key, exter_invoke_ip, extra_common_param, buyer_email, royalty_type, royalty_parameters, it_b_pay, key, input_charset, sign_type);

            //GET方式传递
            string url = aliService.Create_url();

            Response.Redirect(url);
        }
    
    }
}
